package com.demo.websocket.util;

import org.springframework.util.StringUtils;

import javax.websocket.RemoteEndpoint;
import javax.websocket.Session;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 创建时间: 2020/9/10 11:49
 * WebSocket工具类
 *
 * @author 周江明
 */
public class WebSocketUtil {
    /**
     * 保存所有用户消息
     */
    public static Map<Session, String> massageMap = new ConcurrentHashMap<>();

    /**
     * 向指定客户端发送消息
     *
     * @param session 客户端session
     * @param massage 消息
     */
    public static void sendMassage(Session session, String massage) {
        if (session != null) {
            //创建发送消息的对象
            RemoteEndpoint.Basic basic = session.getBasicRemote();
            if (basic != null) {
                try {
                    //发送消息
                    basic.sendText(massage);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 向多个客户端发送消息
     *
     * @param sessions 要发送的客户端session集合
     * @param message  消息
     */
    public static void bulkMessage(Set<Session> sessions, String message) {
        if (sessions != null && (StringUtils.hasLength(message))) {
            for (Session session : sessions) {
                sendMassage(session, message);
            }
        }
    }

}
